home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c++-part2 / 17207 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  11.2 KB

  1. Path: news.nstn.ca!news
  2. From: dbshapco@fox.nstn.ca (dbshapco)
  3. Newsgroups: comp.lang.eiffel,comp.lang.c,comp.lang.c++,comp.object,comp.software-eng
  4. Subject: Re: OOA [was:Re: Beware of "C" Hackers -- A rebuttal to Bertrand Meyer]
  5. Date: 14 Apr 1996 14:13:26 GMT
  6. Organization: iSTAR Navigator User
  7. Message-ID: <4kr166$1ep@news.nstn.ca>
  8. References: <1995Jul3.034108.4193@rcmcon.com> <bksDoFwBA.Eut@netcom.com> <jmaling-2303960413010001@slwol1p47.ozemail.com.au> <4kkkbm$4ld@news4.digex.net> <4kku1gINN7me@keats.ugrad.cs.ubc.ca> <4kma54$11m@news4.digex.net> <goochb.334.0015B418@rwi.com>
  9. Reply-To: dbshapco@fox.nstn.ca
  10. NNTP-Posting-Host: ts6-11.ott.istar.ca
  11. Mime-Version: 1.0
  12. X-Newsreader: WinVN 0.93.14
  13.  
  14. In article <goochb.334.0015B418@rwi.com>, goochb@rwi.com says...
  15. >
  16. >Kazimir Kylheku (c2a192@ugrad.cs.ubc.ca) wrote:
  17. >>The OO arena is a philosophical one. I don't particularly subscribe to the 
  18.  
  19. >>view
  20. >>that there ought to be a naive correspondence between software entities and
  21. >>some ``real world'' entities,  ....
  22. >
  23. >Nor do I.  The (apparently widespread) idea that such correspondence 
  24. >is in some way significant to the basis of object-oriented <whatever>
  25. >is, IMO, a gross misconception.  Object technology has a sound basis 
  26. >without it, and in programming, one is rarely modelling the "real world"
  27. >directly (except in UI, when building upon spatio-temporal "real world"
  28. >metaphors to bridge the gap between the abstractions a program is 
  29. >based on and the user, and even then, the models used are abstract).
  30.  
  31. Many cooked examples for OO tend to use hyperbolic real world correspondence 
  32. which leads people with superficial understanding of OOA to assume that OO 
  33. demands modeling 'real world' objects.  In some problem domains this is 
  34. possible and convenient, but many problem domains are abtract and have no 
  35. real world correspondences.
  36.  
  37. OOA however should produce a nomenclature and taxonomy for the problem domain 
  38. that permits the problem to be described to people sophisticated in the 
  39. problem domain but not in software development (violation to this rule is of 
  40. course when the problem domain IS software development in some form).  This 
  41. step is fundamental to communicating elements of the problem statement from 
  42. users to developers using common and accepted terminology (rather than the 
  43. jargon of either community) AND to limiting communication to the problem 
  44. domain (and NOT the solution domain -- that is, how the problem is solved 
  45. using software).
  46.  
  47. Since sound SE demands high traceability through analysis, design, 
  48. implementation and even testing (OO or NOT), the nomenclature and taxonomy 
  49. should appear in later stages of software development.  One should be able to 
  50. pick out an entity in the analysis and trace through to see how it affected 
  51. design and implementation, or conversely to pick a piece of implementation 
  52. and trace up through design to the analysis that motivates that software.  
  53. IME, A&D aren't much worth pursuing when they do not produce traceability.
  54. (The A&D then are practically throw-away, and little use to enhancing and 
  55. maintaining the software.)
  56.  
  57. The largest problem I see in SE A&D (and we still aren't speaking 
  58. specifically to OO) is using A&D as alternate ways of describing 
  59. implementation.  There is very little value in this and it is often 
  60. frustrating to developers who in fact end up producing descriptions of the 
  61. same thing several times, only the last of which compiles.  (As with most 
  62. things the strongest criticisms for A&D and OO and OOA&D seem to arise from 
  63. misunderstanding and abuse, rather than inherent flaws.)  This improper level 
  64. of abstraction also leads to throw-away A&D, because it is IMPOSSIBLE to 
  65. synchronize a high-level description of an implementation with an actual 
  66. implementation.
  67.  
  68. (As this suggests, it is possible to commit or learn to OO in stages, 
  69. although it would seem to be easier to start with analysis and move to 
  70. implementation, while unfortunately most practioners go through the reverse 
  71. and pick up bad habits along the way.)
  72.  
  73. Now back to OO.  Given that the developer (or even better, a domain 
  74. specialist) has produced a sound analysis of the problem domain, it is fairly 
  75. straightforward to move through OOD and OOP by converting the nomenclature 
  76. and taxonomy into classes and a class hierarchy.  The problem, as mentioned 
  77. earlier, is getting a good nomenclature and taxonomy that describes the 
  78. problem domain.  If there is no real world correspondence that suggests a 
  79. decomposition of the problem domain, then conventions from the problem domain 
  80. or any appropriate metaphor can be employed (most problem domains have 
  81. conventional terminology to describe 'entities' in that domain -- finding a 
  82. good metaphor is more challenging and might even require a degree of 
  83. imagination and creativity in the analyst).  A common metaphor, as mentioned 
  84. by the previous poster, is 'windows' in the GUI domain (although most 
  85. metaphors used in software are far from pure -- what has a 'mouse' to do with 
  86. 'windows', and how did 'menus' get mixed up with either!).
  87.  
  88. Two problems seem to appear here.  First, entities from the solution domain 
  89. appear in an analysis of the problem domain, caused by anticipation (the 
  90. analyst is subconsciously solving the problem domain in her head even as she 
  91. analyses it), wrong expertise (using developers with high knowledge of the 
  92. solution domain and low knowledge of the problem domain to perform analysis), 
  93. and re-engineering (the problem and solution domains are so interwoven in 
  94. legacy software that they are difficult to differentiate), or recursion (the 
  95. problem domain is connected somehow with software engineering or 
  96. development, and so it is difficult to separate terminology from the problem 
  97. domain and solution domain -- most often the concept of META-languages or 
  98. META-models becomes employed to differentiate the domains).  Second, when 
  99. metaphors must be used in analysis, the analyst becomes obsessed with the 
  100. metaphor and detaches from the problem domain (this problem seems most common 
  101. to people who deal mostly in abstract domains, or have a tendency to try to 
  102. make the world fit their aesthetically pleasing theoretical models -- 
  103. symptomatically the analyst goes looking for something in the problem 
  104. domain to correspond to some term suggested by the metaphor).
  105.  
  106. A naive and simplistic approach to *forcing* problem domains to be described 
  107. in terms of unrealistic real world correspondences is wrong, and adds nothing 
  108. to software engineering.  It may be easy to derive classes and a class 
  109. hierarchy from such an analysis, but it won't aid understanding or 
  110. communication of the problem or its solution.  Such misapplication of OOA I 
  111. think results most often in criticism of OOA (and then when the poorly 
  112. thought out classes and class hierarchy are converted to implementations, OOP 
  113. et criticized for being puerile and simplistic).
  114.  
  115. In a nutshell, any anticipation of the solution domain pollutes analysis, to 
  116. the worst case in which analysis is nothing more than an alternate way of 
  117. describing implementation (ditto design).  OOP should generate objects which 
  118. correspond to entities in the problem domain and the relationships suggested 
  119. by a well defined taxonomy, and the quality of the classes and class 
  120. hierarchy vary directly with the quality of analysis.  Puerile and 
  121. simplisitic analysis based on inappropriate or forced correspondences usually 
  122. results in crippled and incomprehensible classes and class hierarchies.
  123.  
  124. --
  125.  
  126. Brad Shapcott
  127. Lockheed-Martin's Advanced Concepts Center, Ottawa, Canada
  128. Ph: (613) 592-8744 x227 1-800-43-TRAIN
  129.  
  130. [If some junk follows this signature, pls e-mail me -- this is the first time 
  131. I've used this particular posting program.] 
  132. ; winvn.ini
  133. [Personal]
  134. UserName=dbshapco
  135. MailAddress=dbshapco@fox.nstn.ca
  136. Organization=iSTAR Navigator User
  137. ReplyTo=dbshapco@fox.nstn.ca
  138. [Communications]
  139. UseSocket=1
  140. NNTPHost=news.nstn.ca
  141. SMTPHost=fox.nstn.ca
  142. NNTPService=nntp
  143. MailDemandLogon=1
  144. MailForceType=2
  145. DebugComm=1
  146. GenSockDLL=genasync.dll
  147. ConnectAtStartup=1
  148. [Authorization]
  149. NNTPUserName=
  150. NNTPPassword=
  151. NNTPSavePassword=0
  152. [Preferences]
  153. EnableThreading=1
  154. SignatureFile=C:\NAVIGATR\NEWS\WinVn.ini
  155. EnableSignature=1
  156. MailLog=0
  157. MailLogFile=MAIL.LOG
  158. PostLog=0
  159. PostLogFile=POST.LOG
  160. DoList=2
  161. FullNameFrom=1
  162. ArticleThreshold=50
  163. ShowUnsubscribed=1
  164. ShowReadArticles=1
  165. ConfirmBatchOps=1
  166. NewWndGroup=1
  167. NewWndArticle=0
  168. SaveArtAppend=1
  169. ConnectAtStartup=1
  170. ConfirmExit=1
  171. ConfirmReplyTo=1
  172. CcByMail=0
  173. ThreadFullSubject=0
  174. GroupMultiSelect=0
  175. ShowUnreadOnly=0
  176. [Coding]
  177. CodingStatusVerbose=0
  178. DumbDecode=0
  179. ArticleSplitLength=50000
  180. EncodingTable=
  181. SubjectTemplate=%s  -  %f [%p/%t]
  182. MIMEBoundary=*-*-*- Next Section -*-*-*
  183. BlankBeforeMIME=0
  184. DecodePath=C:\NAVIGATR\NEWS\download
  185. BlockCodingStatusAlwaysOnTop=0
  186. ReviewAttach=1
  187. AttachInNewArt=0
  188. ExecuteDecodedFiles=0
  189. KeepArticleHeaderVisible=0
  190. UseSmartFiler=1
  191. EncodingType=Base-64
  192. GenerateMIME=1
  193. MIMEUsageSuggestions=1
  194. MIMEUUType=x-uue
  195. MIMEXXType=x-xxe
  196. MIMECustomType=x-custom3to4
  197. DefaultContentType=Other
  198. AlsoDecodeOpenArticles=0
  199. MinimizeStatusWindows=0
  200. [Interface]
  201. ListFontFace=Courier
  202. ListFontSize=10
  203. ListFontStyle=Regular
  204. ArticleFontFace=Courier
  205. ArticleFontSize=10
  206. ArticleFontStyle=Regular
  207. StatusFontFace=Times New Roman
  208. StatusFontSize=11
  209. StatusFontStyle=Regular
  210. PrintFontFace=Arial
  211. PrintFontSize=12
  212. NetUnSubscribedColor=0,0,200
  213. NetSubscribedColor=0,0,0
  214. ArticleUnSeenColor=0,0,0
  215. ArticleSeenColor=0,0,200
  216. ArticleTextColor=0,0,0
  217. StatusTextColor=0,0,0
  218. ArticleBackgroundColor=255,255,255
  219. ListBackgroundColor=255,255,255
  220. StatusBackgroundColor=255,255,255
  221. ThumbTrack=1
  222. WinVnFontFace=MS Sans Serif
  223. WinVnFontSize=8
  224. WinVnFontStyle=Bold
  225. CompositionFontFace=Courier
  226. CompositionFontSize=10
  227. CompositionFontStyle=Regular
  228. UseInverseSelections=0
  229. [winvn]
  230. Notice1=**** The [winvn] section is no longer needed unless    ****
  231. Notice2=**** you want compatibility with old versions of WinVn ****
  232. [Admin]
  233. Newsrc=C:\NAVIGATR\NEWS\NEWSRC
  234. Version=WinVN 0.93.14
  235. [Searches]
  236. LastArticleTextFind=
  237. LastArticleHeaderFind=
  238. LastGroupNameFind=
  239. [Smart Filer]
  240. OnDupeName=0
  241. OnNameTooLong=0
  242. MaxFileNameLen=8
  243. MaxFileExtLen=3
  244. EnableExtensionConversion=1
  245. [Mail Addresses]
  246. Address1=dbshapco@fox.nstn.ca
  247. [Logging]
  248. MailLog=0
  249. MailLogFile=MAIL.LOG
  250. PostLog=0
  251. PostLogFile=POST.LOG
  252. [Confirmation]
  253. ConfirmBatchOps=1
  254. ConfirmDisconnect=0
  255. ConfirmSaveOnExit=0
  256. ConfirmReplyTo=1
  257. [Group List]
  258. DoList=2
  259. ShowUnsubscribed=1
  260. GroupListMultiSelect=0
  261. UsenetWindowPos=0,0,400,540
  262. [Article List]
  263. ArticleThreshold=50
  264. MinArticlesToRetrieve=50
  265. FullNameFrom=0
  266. EnableThreading=1
  267. ShowUnreadOnly=0
  268. NewWndGroup=0
  269. ThreadFullSubject=0
  270. ThreadDepthIndicator=
  271. SaveArtAppend=1
  272. ArtListMultiSelect=1
  273. GroupWindowPos=1,0,800,300
  274. [Article]
  275. NewWndArticle=0
  276. WrapIncomingArticleText=0
  277. WrapIncomingArticleTextLength=80
  278. TrimHeaders=1
  279. ScrollPastHeaders=1
  280. ItalicizeQuotes=1
  281. ArticleWindowPos=130,259,640,362
  282. [Compose]
  283. WordWrap=1
  284. PrefillCcAddress=1
  285. ShowOrgHdr=0
  286. ShowReplyToHdr=0
  287. ShowKeywordsHdr=0
  288. ShowSummaryHdr=0
  289. ShowDistributionHdr=0
  290. ShowFromHdr=0
  291. FollowupSaysTemplate=In article %i, %a says...
  292. ReplySaysTemplate=In article %i, you say...
  293. SignatureFile=C:\NAVIGATR\NEWS\WinVn.ini
  294. EnableSignature=1
  295. [Attachments]
  296. DefaultAttachInNewArt=0
  297. ArticleSplitLength=50000
  298. SubjectTemplate=%s  -  %f [%p/%t]
  299. GenerateMIME=1
  300. MIMEUsageSuggestions=1
  301. MIMEBoundary=*-*-*- Next Section -*-*-*
  302. MIMEUUType=x-uue
  303. MIMEXXType=x-xxe
  304. MIMECustomType=x-custom3to4
  305. DefaultEncodingType=Base-64
  306. DefaultContentType=Other
  307. EncodingTable=
  308.  
  309.